package com.fotoloka.geracao;
import java.awt.Image;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;

import javax.imageio.ImageIO;


public class GerarLeiauteLateral {

	
	public static void main(String[] args) throws IOException {
		int alturaTotal = 1181; //608
		int larguraTotal = 1772; //912
		int alturaFoto = 448; //224
		int larguraFoto = 800; //400, 391
		int espaco = 3;
		int margemSuperior = 35;
		int entreFotos = 30;
		
		BufferedImage imgFundo = ImageIO.read(new File("C:\\Users\\Pablo\\Dropbox\\Fotos Churrasco na Laje\\leiaute\\fundo_quadrados_ajustado2.jpg"));
		BufferedImage imgTitulo = ImageIO.read(new File("images_laje\\nome.jpg"));
		BufferedImage imgSubTitulo = ImageIO.read(new File("images_laje\\evento.jpg"));
		BufferedImage imgData = ImageIO.read(new File("images_laje\\data.jpg"));
		BufferedImage imgRodape = ImageIO.read(new File("images_laje\\rodape.jpg"));
		
		File dir = new File(
				"C:\\Users\\Pablo\\Dropbox\\Fotos Churrasco na Laje");
		File dirFotoComLogo = new File(
				"C:\\Users\\Pablo\\Dropbox\\Fotos Churrasco na Laje\\LeiauteHorizontal");
		for (String dirsSecao : dir.list()) {
			if (dirsSecao.startsWith("secao")) {
				File dirSecao = new File(dir, dirsSecao);
				BufferedImage[] parteImpressao = new BufferedImage[4];
				File finalImage = new File(dirFotoComLogo,dirSecao.getName() + ".jpg" );
				int i = 0;
				for (String nomefotoArquivo : dirSecao.list()) {
					File fotoArquivo = new File(dirSecao, nomefotoArquivo);
					if (fotoArquivo.getName().startsWith("foto")) {
						parteImpressao[i] = ImageIO.read(fotoArquivo);
						i++; //incrementa o indice da foto	
					}
				}
				/*monta o conjunto de fotos*/
				if(parteImpressao.length >= 4) {
					
					if(parteImpressao[0] == null || parteImpressao[1] == null  || parteImpressao[2] == null || parteImpressao[3] == null  ) {
						continue;
					}
					int yTitulo = (alturaFoto * 2) + entreFotos + 2*margemSuperior;
					int xTitulo = (larguraTotal - imgTitulo.getWidth()) / 2;
					imgFundo.createGraphics().drawImage(imgTitulo, xTitulo, yTitulo, null);
					int ySubTitulo = yTitulo + imgTitulo.getHeight() + (2* espaco); 
					int xSubTitulo = (larguraTotal - imgSubTitulo.getWidth()) / 2;
					imgFundo.createGraphics().drawImage(imgSubTitulo, xSubTitulo, ySubTitulo, null);
					int yData = ySubTitulo + imgSubTitulo.getHeight() + (2* espaco);
					int xData = (larguraTotal - imgData.getWidth()) / 2;
					imgFundo.createGraphics().drawImage(imgData, xData, yData, null);
					
					int x1 = (larguraTotal - (2*larguraFoto) - entreFotos ) / 2;
					int x2 = x1 + larguraFoto + entreFotos;

					int y1 = margemSuperior;
					int y2 = y1 + alturaFoto + entreFotos;
					
					imgFundo.createGraphics().drawImage(parteImpressao[0].getScaledInstance(larguraFoto, alturaFoto, Image.SCALE_AREA_AVERAGING), x1, y1, null);
					imgFundo.createGraphics().drawImage(parteImpressao[1].getScaledInstance(larguraFoto, alturaFoto, Image.SCALE_AREA_AVERAGING), x1, y2, null);
					imgFundo.createGraphics().drawImage(parteImpressao[2].getScaledInstance(larguraFoto, alturaFoto, Image.SCALE_AREA_AVERAGING), x2, y1, null);
					imgFundo.createGraphics().drawImage(parteImpressao[3].getScaledInstance(larguraFoto, alturaFoto, Image.SCALE_AREA_AVERAGING), x2, y2, null);
					
					int xRodape = larguraTotal - imgRodape.getWidth() - 5*espaco;  
					int yRodape = alturaTotal - imgRodape.getHeight() - 5*espaco;
					imgFundo.createGraphics().drawImage(imgRodape, xRodape, yRodape, null);
					
					ImageIO.write(imgFundo, "jpeg", finalImage);	
				}
			}
		}
	}
}
